package LeetCode.Leet700_799.Leet760_769.Leet763;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName Solution_1
 * @Author 孙天赐
 * @Date 2025/5/31 13:31
 * @Description TODO: 方法一  模拟（贪心）  6ms    27.78%
 */
class Solution_1 {
    public List<Integer> partitionLabels(String s) {
        List<Integer> result = new ArrayList<>();
        char[] sArr = s.toCharArray();  // 转化为数组效率更高
        int startIndex = 0;  // 当前切分的起始位置
        int endIndex = 0;  // 当前切分的终止位置
        int i = 0;  // 当前循环判断的元素
        while (endIndex < sArr.length) {
            char c = sArr[i];
            // 从后往前找到该字符最后出现的位置
            // 到endIndex就行了，endIndex取的是j和原endIndex的较大值
            for (int j = sArr.length - 1; j > endIndex; j--) {
                if (sArr[j] == c) {
                    // 更新当前截取的最终位置
                    endIndex = j;
                    break;
                }
            }
            // 如果i到达了最终截取的位置，则截取
            if (i == endIndex) {
                result.add(endIndex - startIndex + 1);
                endIndex++;
                startIndex = endIndex;
            }
            i++;
        }

        return result;
    }
}
